home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-seriously_amiga-
/
programming
/
arexx
/
ademl2ag
/
a2g.rexx
next >
Wrap
OS/2 REXX Batch file
|
1999-01-25
|
3KB
|
122 lines
/* ARexx Script */
IF ARG() ~=1 THEN DO
SAY "USAGE: a2g.rexx <filename>"
EXIT 5
END
ARG filename
ADDRESS COMMAND
CALL OPEN(guide,filename'.ag','W')
CALL WRITELN(guide,'@DATABASE ADE mailinglist')
CALL WRITELN(guide,'@AUTHOR ZAP')
CALL WRITELN(guide,'@NODE main')
CALL WRITELN(guide,'')
CALL OPEN(fil,filename,'R')
SAY 'Scanning 'filename' and Creating Main Node...'
DO cx=1 TO 9999
IF EOF(fil) THEN BREAK
dateline = 'slut'
DO y=1 TO 9999
IF EOF(fil) THEN BREAK
line=READLN(fil)
chk = LEFT(line,5)
IF chk = 'Prece' THEN BREAK
SELECT
WHEN chk = 'Subje' THEN DO
subjline = line
END
WHEN chk = 'From:' THEN DO
dateline = line
END
OTHERWISE
END
END
IF dateline = 'slut' THEN BREAK
subjline=RIGHT(subjline,LENGTH(subjline)-9)
subjline=subjline' '
subjline=LEFT(subjline,26)
DO z=1 TO 26
v=POS('"',subjline)
IF v=0 THEN BREAK
subjline = OVERLAY("'",subjline,v)
END
dateline=RIGHT(dateline,LENGTH(dateline)-6)
CALL WRITELN(guide,' @{" 'subjline' " LINK 'cx'} 'dateline)
tot = cx
DO y=1 TO 9999
IF EOF(fil) THEN BREAK
line=READLN(fil)
chk = LEFT(line,8)
IF chk = ' From ow' THEN BREAK
IF chk = 'From own' THEN BREAK
IF chk = ' From gg' THEN BREAK
IF chk = 'From gg-' THEN BREAK
IF chk = ' From ad' THEN BREAK
IF chk = 'From ade' THEN BREAK
END
END
CALL CLOSE(fil)
CALL WRITELN(guide,'')
CALL WRITELN(guide,'@ENDNODE main')
SAY 'Total Links 'tot
CALL OPEN(fil,filename,'R')
SAY 'Creating Nodes....'
cx = 1
DO x=1 TO 99999
IF EOF(fil) THEN BREAK
line=READLN(fil)
chk = LEFT(line,5)
SELECT
WHEN chk = 'Subje' THEN subjline = line
WHEN chk = 'From:' THEN fromline = line
WHEN chk = 'Date:' THEN dateline = line
WHEN chk = 'Prece' THEN DO
CALL WRITELN(guide,'@NODE 'cx'')
CALL WRITELN(guide,' 'fromline)
CALL WRITELN(guide,' 'dateline)
CALL WRITELN(guide,' 'subjline)
skip = 0
DO z=1 to 9999
IF EOF(fil) THEN BREAK
line=READLN(fil)
chk = LEFT(line,8)
IF z < 2 THEN DO
IF chk = 'Reply-To' THEN skip = 1
IF chk = 'Errors-T' THEN skip = 1
END
IF chk = ' From ow' THEN BREAK
IF chk = 'From own' THEN BREAK
IF chk = ' From gg' THEN BREAK
IF chk = 'From gg-' THEN BREAK
IF chk = ' From ad' THEN BREAK
IF chk = 'From ade' THEN BREAK
IF skip = 0 THEN DO
CALL WRITELN(guide,line)
END
IF skip = 1 THEN skip = 0
END
CALL WRITELN(guide,'@ENDNODE 'cx'')
cx = cx + 1
END
OTHERWISE
END
END
cx = cx - 1
IF tot != cx THEN DO
SAY 'Nodes Differ: Actual Nodes 'cx
END
SAY 'Closing files...'
CALL CLOSE(fil)
CALL CLOSE(guide)
SAY 'Ready.'
EXIT